Skip to content

Refresh workspace and GitHub Actions dependencies - #170

Open
niemyjski wants to merge 8 commits into
mainfrom
feature/dependency-refresh-2026-07
Open

Refresh workspace and GitHub Actions dependencies#170
niemyjski wants to merge 8 commits into
mainfrom
feature/dependency-refresh-2026-07

Conversation

@niemyjski

@niemyjski niemyjski commented Jul 12, 2026

Copy link
Copy Markdown
Member

Summary

  • Refresh all seven SDK and seven example workspaces to current releases allowed by the repository's seven-day cooling policy and verified framework compatibility.
  • Update Expo to 57.0.17 / React Native 0.86.3, Next.js to 16.3.3, Vite to 8.2.2, esbuild to 0.28.2, jsdom to 30.0.1, and current eligible ESLint/Vitest/Svelte tooling.
  • Keep the existing SHA-pinned GitHub Actions hardening. Official checkout 7.0.1, setup-node 7.0.0, and setup-dotnet 6.0.0 releases remain current as of September 2.
  • The September follow-up changes only manifests, the lockfile, and the cooling exception; no application code or public API changes.

Release-note review

Update Relevant changes and compatibility decision
Next.js 16.3.3 Critical RCE fixes for Windows-hosted servers and AVIF image optimization. Production build and server-route runtime tested.
Expo SDK 57 patches Native fetch/lifecycle fixes and the Metro 0.84.5 upgrade, which removes the vulnerable image-size dependency.
React Native 0.86.3 EventEmitter lifetime-race, Hermes, modal-event, and deterministic CocoaPods checksum fixes; matches the Expo SDK 57 compatibility map.
jsdom 30 / 30.0.1 Requires Node 24.15+ on the Node 24 line; CI selects current Node 24. CSS/DOM fixes pass all existing tests unchanged under Node 24.20.0.
esbuild 0.28.2 Tree-shaking, CSS/minification, top-level-await, and input-overwrite fixes. Lifecycle permission updated to this exact version.
Vite 8.2.2 / Vitest 4.1.11 HMR/SSR/configuration fixes, concurrency correction, and mock redirects restricted to the filesystem allowlist.
typescript-eslint 8.68 Rule correctness/autofix fixes; declared TypeScript support remains <6.1, so TypeScript 7 is not compatible.
xmldom 0.8.15 / 0.9.12 XML injection and parsing-resource security fixes. Both are now cooled; remove the previous xmldom cooling exemption.
qs 6.16.0 Fixes array-limit bypass and attacker-controlled isBuffer DoS. The only explicit cooling exemption is now qs for these security fixes.

Also checked current release notes for the React/Vue/Svelte Vite plugins, SvelteKit, Testing Library, and Vitest ESLint plugin. Existing APIs require no migration.

Compatibility holds

  • Expo's SDK 57 map still requires React/ReactDOM 19.2.3, AsyncStorage 2.2.0, safe-area-context 5.7.x, and screens 4.26.x. Keep those versions coherent; do not take incompatible latest versions individually.
  • Keep TypeScript 6.0.3 because typescript-eslint 8.68 explicitly supports TypeScript <6.1.
  • Expo Doctor passes 20/21 checks. Its sole warning asks for four patches published inside the seven-day cooling window: expo 57.0.19, metro-runtime 57.0.15, constants 57.0.17, and dev-client 57.0.18. Keep the newest cooled set; no compatibility-check exclusions or suppressions added.
  • npm registry timestamps were checked for all 210 changed lock entries: qs 6.16.0 is the only update inside seven days, documented in .npmrc for GHSA-x5fp-wj9c-mxmx and GHSA-4mjr-xmp4-gh2g.

Security results (September 2 final clean tree)

  • npm audit: 0 vulnerabilities across the full monorepo, including Expo tooling.
  • OSV: no issues found. The previously unresolved image-size advisories are gone because Metro no longer depends on image-size.
  • 796 verified registry signatures; 224 verified attestations.
  • All 877 remote lock entries use registry.npmjs.org and have integrity hashes.
  • npm ls --all: no dependency-tree problems; npm install-scripts ls: no unreviewed install scripts.
  • zizmor --pedantic: no findings, with the existing documented GitHub Packages trusted-publishing exception.

Validation

  • Clean npm ci using Node 24.20.0 / npm 11.
  • npm run build: all SDK and buildable sample workspaces pass.
  • npm test: 28 files / 348 tests pass, including cross-platform environment-only build-version regression coverage.
  • npm run lint: pass.
  • Svelte check: 0 errors / 0 warnings.
  • Package dry-runs: all seven publishable SDKs include JavaScript and declaration entry points.
  • Browser smoke: vanilla logging; React logging, error boundary, and recovery; Vue handled error; SvelteKit handled error; Next.js production server-route log; Expo web export and caught-error UI.
  • Express runtime: / 200, missing route 404, /trycatch expected 500; events enqueued.
  • Local Exceptionless backend was offline, so delivery/settings fetch failures (and vanilla session-end rejection on page unload) were observed. This proves local UI/event construction, not live backend delivery or native-device crash reporting.
  • All owned browser sessions and sample servers stopped; unrelated dogfood-output/ left untouched.

Thermo-nuclear review

Reviewed the exact effective diff for structural regression, unnecessary abstractions, scattered special cases, public API drift, lifecycle permissions, lockfile integrity/age, and file-size growth. The September increment contains no application-code churn, no new abstractions, and no file newly crossing 1,000 lines; the generated lockfile was already above that threshold. Existing cookie/UUID overrides remain necessary because upstream parents still request vulnerable older ranges. No new blocking findings.

Hosted validation on 43ef5dfe1deafcb5959bc4b1fa82ed57ece3db21

  • PR build: passed on Linux, macOS, and Windows (Node 24; build, lint, tests).
  • Push build: passed on all three operating systems; GitHub CI package publication also passed. npm release publication was correctly skipped for this non-tag branch.
  • CodeQL: JavaScript and Actions analysis passed.
  • Human review is still required; this PR has not been merged.
  • Commit signing used the existing local configuration. GitHub reports unknown_key, so the commit does not have a verified signature badge; no account keys or signing settings were changed.

GitHub's default-branch Dependabot alerts are separate from the zero-finding dependency tree audited here and will need reevaluation after merge.

Copilot AI review requested due to automatic review settings July 12, 2026 18:48

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refreshes dependency versions across the Exceptionless.JavaScript monorepo (core SDK packages plus example apps) to align on current compatible tooling, reduce known vulnerabilities via overrides, and keep the build/test toolchain consistent across workspaces.

Changes:

  • Bumps esbuild across all SDK packages and updates root allowScripts accordingly.
  • Updates framework/example dependencies (React, Vue, Vite, SvelteKit, Next.js, Expo/RN) and adds the missing @testing-library/dom dependency for the React example.
  • Adds root overrides to pin @react-native-async-storage/async-storage and patch vulnerable transitive dependencies (cookie, postcss, uuid).

Reviewed changes

Copilot reviewed 14 out of 15 changed files in this pull request and generated no comments.

Show a summary per file
File Description
package.json Updates shared dev deps (React/Vitest), updates allowScripts, and adds dependency overrides for security/compatibility pins.
packages/core/package.json Bumps esbuild used for bundling core package outputs.
packages/browser/package.json Bumps esbuild used for bundling browser package outputs.
packages/angularjs/package.json Bumps esbuild used for bundling AngularJS wrapper outputs.
packages/node/package.json Bumps esbuild and updates @types/node for Node package development/build.
packages/react/package.json Updates React type dependencies and bumps esbuild for the React wrapper bundle.
packages/react-native/package.json Pins AsyncStorage dev dependency for Expo/RN compatibility and updates React types.
packages/vue/package.json Bumps esbuild used for bundling Vue wrapper outputs.
example/browser/package.json Updates Vite for the browser sample app.
example/react/package.json Updates React/Vite tooling and adds @testing-library/dom to satisfy testing-library peer requirements.
example/vue/package.json Updates Vue/compiler and Vite for the Vue sample app.
example/svelte-kit/package.json Updates SvelteKit/Svelte/Vite/Vitest versions for the SvelteKit sample app.
example/nextjs/package.json Updates Next.js and aligns React versions for the Next.js sample app.
example/expo/package.json Upgrades Expo SDK and React Native version while keeping Expo-pinned React and AsyncStorage versions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 19e8d457aa

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread package.json Outdated
@niemyjski

Copy link
Copy Markdown
Member Author

Dependency/security recheck (2026-07-31)

  • Updated official actions to their current releases: actions/checkout@v7, actions/setup-node@v7, actions/cache@v6, and actions/setup-dotnet@v6.
  • Refreshed the remaining compatible workspace updates, including Vite 8.2.0, Expo 57.0.9 / React Native 0.86.2, SvelteKit 2.70.2, and current React/Node type packages.
  • npm audit: 0 vulnerabilities across 908 dependencies.
  • OSV Scanner: no issues across 868 lockfile packages (14 local workspace entries are unscannable by design).
  • npm registry verification: 800 package signatures verified; 221 packages also have verified attestations.
  • Reconciled the 33 open Dependabot alerts shown for the default branch against this PR lockfile. Every vulnerable package resolves at or above its patched version here, including shell-quote@1.10.0, next@16.2.12, sharp@0.35.3, undici@7.29.0, postcss@8.5.23, and brace-expansion@5.0.8.

Validation passed:

  • clean npm 11 install
  • full monorepo build
  • 347 tests
  • ESLint + Prettier
  • Svelte diagnostics (0 errors / 0 warnings)
  • Expo Doctor (20/20)
  • Expo iOS and web production exports
  • Sharp native smoke test
  • live sample exercises for Browser, React, Vue, SvelteKit, Next.js, Expo web, and Express

The samples successfully rendered and queued their log/error events. Submission failures were expected because the local Exceptionless backend at ports 7110/7111 was not running.

@niemyjski niemyjski changed the title Refresh workspace dependencies Refresh workspace and GitHub Actions dependencies Aug 13, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 92e79b4c52

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

npm publish --workspaces --access public --tag "ci-${TAG_BRANCH}" || true
run: | # zizmor: ignore[use-trusted-publishing] GitHub Packages uses GITHUB_TOKEN.
TAG_BRANCH="${GITHUB_REF##*/}"
npm publish --workspaces --access public --tag "ci-${TAG_BRANCH}"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make branch package publishing idempotent

When this branch workflow is rerun for a commit whose packages were already published—especially after a partial publish—the deterministic MinVer output gives every workspace the same version again. The npm publish documentation states that publishing fails when the name/version combination already exists, so removing the previous error handling makes such reruns finish unsuccessfully even if only one workspace conflicts. Handle already-published versions explicitly while still surfacing genuine registry failures.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 3, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-03T03:11:31.824757Z 43ef5df New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants